/**
 * 索引类型指的不是某一个特定的类型工具，
 * 它其实包含三个部分：索引签名类型、索引类型查询 与 索引类型访问，这三者都是独立的类型工具。
 * 唯一共同点是，它们都通过索引的形式来进行类型操作，
 * 其中，索引签名类型 是声明，
 * 索引类型查询 与 索引类型访问 两者则是读取。
*/

/**
 * 索引类型查询： keyof 操作符
 * 它可以将 对象中的 所有键 转换为 对应字面量类型，然后再组合成 联合类型。
 * keyof 的产物必定是一个 联合类型type
 * 注意，这里并不会将 数字类型的键名 转换为 字符串类型字面量，而是仍然保持为 数字类型字面量。
*/
interface Foo {
    hanxuming: 1,
    599: 2
}
type FooKeys = keyof Foo; // "hanxuming" | 599
const test : FooKeys = 599
const testA : FooKeys = "hanxuming"
const testB : FooKeys = "hanxuming"


//export {}：解决“无法重新声明块范围变量”错误提示问题
export { }